package org.usmile.algorithms.leetcode.simple;

/**
 * 389. 找不同
 *
 * 给定两个字符串 s 和 t ，它们只包含小写字母。
 * 字符串 t 由字符串 s 随机重排，然后在随机位置添加一个字母。
 * 请找出在 t 中被添加的字母。
 *
 * 示例 1：
 * 输入：s = "abcd", t = "abcde"
 * 输出："e"
 * 解释：'e' 是那个被添加的字母。
 *
 * 示例 2：
 * 输入：s = "", t = "y"
 * 输出："y"
 *
 * 提示：
 * 0 <= s.length <= 1000
 * t.length == s.length + 1
 * s 和 t 只包含小写字母
 */
public class _0389 {
}

class _0389_Solution {
    public char findTheDifference(String s, String t) {
        int diff = 0;
        for (char c : s.toCharArray()) {
            diff ^= c;
        }
        for (char c : t.toCharArray()) {
            diff ^= c;
        }

        return (char) diff;
    }
}

class _0389_Solution1 {
    public char findTheDifference(String s, String t) {
        int[] sCount = new int[26];
        for (char c : s.toCharArray()) {
            sCount[c - 'a'] += 1;
        }

        for (char c : t.toCharArray()) {
            if (--sCount[c - 'a'] < 0) {
                return c;
            }
        }

        return ' ';
    }
}